#算法是高效解决问题的办法
#算法的一种:二分法

#需求:有一个按照从小到大顺序排列的列表（也可以是元祖），需要从该数字列表中找到我们想要的那个数字，如何做到高效
nums=[-3,4,7,10,13,21,43,77,89]
# find_num=13
# 整体遍历效率太低
# for num in nums:
#     if num==find_num:
#         print('find it')
#         break
#二分法
#找到列表中间的值
#mid_val=中间值
#if find_num>mid_val:
#    列表=列表切片
#    查找右半部分
#    pass
nums=[-3,4,7,10,13,21,43,77,89]
find_num=10
def binary_search(find_num,nums):
    print(nums)
    if len(nums)==0:
        print('不存在')
        return
    mid_index=len(nums)//2
    if find_num>nums[mid_index]:
        l1=nums[mid_index+1:]
        binary_search(find_num,l1)
    elif find_num<nums[mid_index]:
        l1=nums[:mid_index]
        binary_search(find_num,l1)
    else:
        print('find it')
binary_search(find_num,nums)
###############################################

nums=[-3,4,7,10,13,21,43,77,89]
find_num=10
def binary_search(find_num,nums):
    print(nums)
    if len(nums)==0:
        print('不存在')
        return
    minindex=len(nums)//2
    if find_num>nums[minindex]:
        l1=nums[minindex+1:]
        binary_search(find_num,l1)
    elif find_num<nums[minindex]:
        l1=nums[:minindex]
        binary_search(find_num,l1)
    else:
        print('find it')
binary_search(find_num,nums)






